<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JS中的私有</title>
</head>
<body>
<script>
  /*
  * 利用块级作用域
  * */
  {
    let num = 0

    window.obj = {
      get num() {
        return num
      },

      set num(num) {
        if (num < 0) return
      }
    }
  }

  console.log(obj.num);
  obj.num = -1
  console.log(obj.num);

/*
*
* 使用闭包
* */

  function access(){
    let _num = 0

    return {
      get num(){
        return _num
      },

      set num(num) {
        if (num < 0) return
      }
    }

  }





/*
*
* 只有在构造函数中才可以放心的写this  在其他函数中写this要考虑这个函数由谁来调用 不能随便的写this
* 下面这种写法是错的
*
*
* */
  /*function access1(){
      let _num = 0

      return {
        getNum: ()=>{
          console.log(this);
        }
      }

    }

    access1._num = 100

    let foo = access()
    console.log(foo.num);

    let foo1 = access1()
  foo1.getNum()*/


















</script>
</body>
</html>